/*!
 * \file UapStateMediaBearerSetupPend.h
 * \brief Class representing state where media bearer is being setup
 */

#ifndef SGW_UAP_STATE_MEDIA_BEARER_SETUP_PEND_H
#define SGW_UAP_STATE_MEDIA_BEARER_SETUP_PEND_H

#include "UapStateBase.h"

namespace tsc
{
namespace sgw
{

/**
 * State of UAP generator when media bearer is being setup
 */
class UapStateMediaBearerSetupPend : public UapStateBase
{
public:

	static UapStateMediaBearerSetupPend* instance();

    virtual void handleEventUapConnectionReleaseReq(
            UapGenerator* uapGen,
            UapEventConnectionReleaseReq* event,
            EventData*& eventData);

    virtual void handleEventGapMediaBearerSetupCfm(
            UapGenerator* uapGen,
            UapEventGapMediaBearerSetupCfm* event,
            EventData*& eventData);

    virtual void handleEventGapMediaBearerSetupRej(
            UapGenerator* uapGen,
            UapEventGapMediaBearerSetupRej* event,
            EventData*& eventData);

    virtual void handleEventT643Expired(
            UapGenerator* uapGen,
            UapEventT643Expired* event,
            EventData*& eventData);

private:
	UapStateMediaBearerSetupPend();

	virtual ~UapStateMediaBearerSetupPend();
};

} // namespace sgw
} // namespace tsc

#endif // SGW_UAP_STATE_MEDIA_BEARER_SETUP_PEND_H
